package com.wjm.permissiondemo;

import android.Manifest;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.wjm.mylibrary.annotation.Permission;
import com.wjm.mylibrary.annotation.PermissionCanceled;
import com.wjm.mylibrary.annotation.PermissionDenied;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViewById();
    }

    private void findViewById() {
        Button btn_one = findViewById(R.id.btn_one);

        btn_one.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                requestOnePermission();//调起权限-方法名任意取
            }
        });
        Button btn_two = findViewById(R.id.btn_two);
        btn_two.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                requestTwoPermission();//调起权限-方法名任意取
            }
        });
        Button btn_one_rc = findViewById(R.id.btn_one_rc);
        btn_one_rc.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                permission200();//调起权限-方法名任意取
            }
        });
        Button btn_one_service = findViewById(R.id.btn_one_service);
        btn_one_service.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startService(new Intent(MainActivity.this, MyService.class));
            }
        });
    }

    //---------------------------请求权限-------------------------------------
    //切入点是Permission-请求一个权限
    @Permission({Manifest.permission.CAMERA})
    private void requestOnePermission() {
        Toast.makeText(this, "requestOnePermission-请求一个权限成功（相机）", Toast.LENGTH_SHORT).show();
    }

    //切入点是Permission-请求两个权限
    @Permission({Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA})
    private void requestTwoPermission() {
        Toast.makeText(this, "requestTwoPermission-请求两个权限成功（写和相机）", Toast.LENGTH_SHORT).show();
    }

    //切入点是Permission-请求一个权限-==>有请求码 有请求码==<==
    @Permission(value = {Manifest.permission.CAMERA}, requestCode = 200)
    private void permission200() {
        Toast.makeText(this, "permission200-请求一个权限成功（相机）", Toast.LENGTH_SHORT).show();
    }
    //---------------------------请求权限-------------------------------------


    //---------------------------请求权限后的-回调结果-------------------------------------

    //请求权限被拒绝-（这个方法与没有返回码的同时存在，都会回调）
    @PermissionCanceled()
    private void permissionCanceled() {
        Toast.makeText(this, "permissionCanceled", Toast.LENGTH_SHORT).show();
    }

    //请求权限失败了-（这个方法与没有返回码的同时存在，都会回调）-这个方法好像没有回调啊，不知道什么时候会回调
    @PermissionDenied()
    private void permissionDenied() {
        Toast.makeText(this, "permissionDenied", Toast.LENGTH_SHORT).show();
    }

    //请求权限被拒绝-==>有返回码 有返回码==<==-（这个方法与没有返回码的同时存在，都会回调）
    @PermissionCanceled(requestCode = 200)
    private void PermissionCanceled200() {
        Toast.makeText(this, "PermissionCanceled200", Toast.LENGTH_SHORT).show();
    }

    //请求权限失败了-==>有返回码 有返回码==<==-（这个方法与没有返回码的同时存在，都会回调）-这个方法好像没有回调啊，不知道什么时候会回调
    @PermissionDenied(requestCode = 200)
    private void PermissionDenied200() {
        Toast.makeText(this, "PermissionDenied200", Toast.LENGTH_SHORT).show();
    }
    //---------------------------请求权限后的-回调结果-------------------------------------


}
